home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / pcl_src.zoo / pcl-env.txt < prev    next >
Text File  |  1989-06-12  |  5KB  |  106 lines

  1. A (very) few words about PCL-ENV.  If you require more information, consult the
  2. source code.  While it is not particularly well documented, it is the final
  3. arbiter of truth regarding its own functionality.
  4.  
  5. The file PCL-ENV.LISP defines some low-level facilities to integrate PCL into
  6. the XeroxLisp environment.  The first order of business is teaching the
  7. FileManager (nee FilePackage) about CLOS defineing forms.  This in turn brings
  8. us to the issue of names.
  9.  
  10.  
  11. o  Names and the FileManager
  12.  
  13. For the FileManager to keep track of defining forms, it needs to know how to
  14. extract a (unique) name and FileManager type from the form.  PCL-ENV includes
  15. FileManager support for the definers DEFCLASS, DEFGENERIC, and DEFMETHOD.
  16.  
  17. DEFCLASS
  18. The name of a DEFCLASS form is the name of the class defined by the form.  The
  19. FileManager type is PCL::CLASSES.  There is a FileManager "undefiner" provided
  20. for DEFCLASS.
  21.  
  22. DEFGENERIC
  23. The name of a DEFGENERIC form is the name of the generic-function defined by the
  24. form.  The FileManager type is PCL::GENERIC-FUNCTIONS.
  25.  
  26. DEFMETHOD
  27. The name of a DEFMETHOD form is a list of the form
  28. (<gf-name> {<qualifier>}* ({<specializer>*})).  The FileManager type is
  29. PCL::METHODS.  There is a FileManager "undefiner" provided for DEFMETHOD.
  30. However, note that if a generic-function was created as a side-effect of the
  31. DEFMETHOD, the undefiner will leave the generic-function defined (albet with no
  32. methods).
  33.  
  34. When editing, it would be onerous to require the programmer to type in the full name of a
  35. method.  PCL-ENV arranges it so that (ED <gf-name>) will ask the programmer
  36. which method on that generic-function should be edited.  (If there is only one
  37. method, it is assumed that that is the method to be edited.)  As of the
  38. Victoria-Day release, EQL specialized methods are handled correctly.
  39.  
  40.  
  41. o  Inspecting CLOS objects (and metaobjects)
  42.  
  43. PCL-ENV defines a protocol that is used to inspect objects, and arranges that
  44. the standard INSPECT function uses this protocol.  Programmers can use this
  45. protocol by defining additional methods on the following generic-functions.
  46.  
  47. INSPECT-SLOT-NAMES object
  48. Returns a list of "slots" to include in the inspector.  The default method
  49. returns a list of all slots on the object.
  50.  
  51. INSPECT-SLOT-VALUE object slot-name
  52. Returns the value to associated with the slot-name in the inspector.  Slot-name
  53. is one of the items returned by INSPECT-SLOT-NAMES.  The default method returns
  54. (SLOT-VALUE object slot-name).
  55.  
  56. INSPECT-SETF-SLOT-VALUE object slot-name new-value
  57. Sets the value associated with the slot-name in the inspector.  Slot-name is one
  58. of the items returned by INSPECT-SLOT-NAMES.  The default method executes
  59. (SETF (SLOT-VALUE object slot-name) new-value).
  60.  
  61. INSPECT-TITLE object inspect-window
  62. Returns the title to use in the inspect-window when inspecting object.  The
  63. default returns the string "Inspecting the class <class-name>" when the object
  64. is a class, or "Inspecting a <class-name>" otherwise.
  65.  
  66.  
  67. o  Debugging and the Stack
  68.  
  69. Debugging in PCL is complicated by generic-functions and methods appear on the
  70. stack not as single objects, but as collections of functions that the programmer
  71. did not directly call.  PCL-ENV redefines a number of internal debugger
  72. functions to simplify the presentation of the stack, and allow the programmer to
  73. access to the original defining forms from the stack.  These changes only affect
  74. the "short" display backtrace (brought up by BT in a break window); the full
  75. backtrace (brought up by BT!) is unaffected.
  76.  
  77.  
  78. o  Misc
  79.  
  80. Prettyprinting
  81.  
  82. The support for standard Prettyprinting is pretty minimal.  Only DEFMETHOD,
  83. DEFCLASS, WITH-ACCESSORS, and WITH-SLOTS are supported, and they aren't really
  84. done right.  Thanks to Harley Davis, PCL-ENV defines SEdit pretty-print specs
  85. for the forms DEFCLASS, DEFMETHOD, DEFGENERIC, GENERIC-FLET, GENERIC-LABELS,
  86. CALL-NEXT-METHOD, SYMBOL-MACROLET, WITH-ACCESSORS, WITH-SLOTS, and
  87. MAKE-INSTANCE.
  88.  
  89. ?=
  90.  
  91. The function SMARTARGLIST is changed to return appropriate values for the
  92. arglists of generic-functions.  The macros DEFCLASS and DEFMETHOD have "pretty"
  93. arglists defined.
  94.  
  95. PrettyFileIndex
  96.  
  97. Again thanks to Harley Davis, PCL-ENV teaches PRETTY-FILE-INDEX about classes,
  98. methods, and accessors.  The variables PCL::*PFI-INDEX-ACCESSORS* and
  99. PCL::*PFI-METHOD-INDEX* may be changed by the user to tailor the computation of
  100. the file index.  Note that the file PRETTY-FILE-INDEX must be loaded before
  101. PCL-ENV for this to take effect.
  102.  
  103.  
  104. --- smL                                25-May-89
  105.  
  106.